﻿#pragma execution_character_set("utf-8")
#include "loginwidget.h"
#include "ui_loginwidget.h"
#include <QImage>
#include <QPixmap>
#include <QPainter>
#include "database.h"

/**
 * @brief 登录界面构造函数
 * @param parent 父组件指针，用于Qt对象树的内存管理
 * @details 初始化UI界面组件，建立信号槽连接
 */
LoginWidget::LoginWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::LoginWidget)
{
    ui->setupUi(this);
}

LoginWidget::~LoginWidget()
{
    delete ui;
}

void LoginWidget::showEvent(QShowEvent *event)
{
    Q_UNUSED(event); // 添加此行

}

void LoginWidget::paintEvent(QPaintEvent *event)
{
    Q_UNUSED(event);
    QPainter painter(this);
    QImage bgImage;
    if(bgImage.load(":/image/bg.png")) {
        bgImage = bgImage.scaled(this->size(), Qt::KeepAspectRatioByExpanding);
        painter.drawImage(0, 0, bgImage);
    }
}

void LoginWidget::resizeEvent(QResizeEvent *event)
{

}

/**
 * @brief 登录按钮点击事件处理
 * @details 执行以下操作：
 * 1. 获取界面输入的用户名和密码
 * 2. 进行空值校验
 * 3. 根据用户类型（管理员/普通用户）执行不同的数据库验证
 * 4. 处理验证结果并发送界面切换信号
 */
void LoginWidget::on_pushButton_1_clicked()
{
    // 获取界面输入
    QString str1 = ui->lineEdit_1->text();
    QString str2 = ui->lineEdit_2->text();
    if(str1.length() < 2 || str2.length() < 2){
        QMessageBox msgBox;
        msgBox.setWindowTitle("提示");
        msgBox.setText("账号或密码不能为空");
        msgBox.exec();
        return;
    }
    // 管理员验证分支
    if(str1 == "admin"){
        if (! DataBasePri::database.open()){//打开数据库
            qCritical() << DataBasePri::database.lastError().text();
            return;
        }
        QSqlQuery query(DataBasePri::database);
        QString instr = QString::fromLocal8Bit("select * from user_information where name = '%1'").arg(str1);
        bool ret = query.exec(instr);
        qDebug()<<"ddddddddd"<<query.lastError();
        DataBasePri::database.close();

        QString t_password;
        QString t_name;
        while (query.next()){
            t_password = query.value(1).toString();
        }
        //验证成功
        if(str2 == t_password){
            /**
             * @brief 发送界面切换信号
             * @param "m_AdminWidget" 表示需要切换到管理员界面
             */
            emit sendDisWidget("m_AdminWidget");
        }else{
            QMessageBox msgBox;
            msgBox.setWindowTitle("提示");
            msgBox.setText("账号密码不匹配！请重新输入！");
            msgBox.exec();
        }
    }else{
        //打开数据库
        if (! DataBasePri::database.open()){
            qCritical() << DataBasePri::database.lastError().text();
            return;
        }
        //数操作据对象
        QSqlQuery query(DataBasePri::database);
        //操作内容
        QString instr = QString::fromLocal8Bit
                ("select * from user where phone = '%1'")
                .arg(str1);
        //这里执行数据库操作
        bool ret = query.exec(instr);
        qDebug()<<"ddddddddd"<<query.lastError();
        //关闭数据库
        DataBasePri::database.close();

        //定义变量
        QString t_password;
        QString t_name;
        while (query.next()){
            t_name = query.value(1).toString();
            t_password = query.value(2).toString();
        }
        //判断密码和数据库中的密码是否一致
        if(str2 == t_password){
            //如果一致则进入软件
            /**
             * @brief 发送界面切换信号
             * @param "m_CenterWidget" 表示需要切换到普通用户主界面
             */
            emit sendDisWidget("m_CenterWidget");
        }else{
            QMessageBox msgBox;
            msgBox.setWindowTitle("提示");
            msgBox.setText("账号密码不匹配！请重新输入！");
            msgBox.exec();
        }
    }
}

void LoginWidget::on_pushButton_2_clicked()
{
    emit sendDisWidget("m_ResigerWidget");
}
